"""
BOM模块字典数据初始化脚本
用于初始化BOM相关的字典类型和字典数据
"""

import os
import sys
import django

# 设置Django环境
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()

from system.models import DictType, DictData


def init_bom_dict_data():
    """初始化BOM相关字典数据"""
    
    # BOM类型字典
    bom_type_dict, created = DictType.objects.get_or_create(
        value='bom_type',
        defaults={
            'name': 'BOM类型',
            'status': True,
            'remark': 'BOM类型字典，用于存储各种BOM类型'
        }
    )
    
    # BOM类型字典数据
    bom_type_data = [
        {'label': '标准BOM', 'value': 'STANDARD', 'sort': 1, 'color_type': 'default', 'css_class': 'bom-standard'},
        {'label': '工艺BOM', 'value': 'PROCESS', 'sort': 2, 'color_type': 'processing', 'css_class': 'bom-process'},
        {'label': '工程BOM', 'value': 'ENGINEERING', 'sort': 3, 'color_type': 'warning', 'css_class': 'bom-engineering'},
        {'label': '生产BOM', 'value': 'PRODUCTION', 'sort': 4, 'color_type': 'success', 'css_class': 'bom-production'},
        {'label': '销售BOM', 'value': 'SALES', 'sort': 5, 'color_type': 'primary', 'css_class': 'bom-sales'},
    ]
    
    for item in bom_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM类型: {item["label"]}'
            }
        )
    
    # BOM状态字典
    bom_status_dict, created = DictType.objects.get_or_create(
        value='bom_status',
        defaults={
            'name': 'BOM状态',
            'status': True,
            'remark': 'BOM状态字典，用于存储BOM的各种状态'
        }
    )
    
    # BOM状态字典数据
    bom_status_data = [
        {'label': '草稿', 'value': 'DRAFT', 'sort': 1, 'color_type': 'default', 'css_class': 'bom-draft'},
        {'label': '审核中', 'value': 'REVIEWING', 'sort': 2, 'color_type': 'processing', 'css_class': 'bom-reviewing'},
        {'label': '已批准', 'value': 'APPROVED', 'sort': 3, 'color_type': 'success', 'css_class': 'bom-approved'},
        {'label': '激活', 'value': 'ACTIVE', 'sort': 4, 'color_type': 'success', 'css_class': 'bom-active'},
        {'label': '停用', 'value': 'INACTIVE', 'sort': 5, 'color_type': 'warning', 'css_class': 'bom-inactive'},
        {'label': '已归档', 'value': 'ARCHIVED', 'sort': 6, 'color_type': 'default', 'css_class': 'bom-archived'},
    ]
    
    for item in bom_status_data:
        DictData.objects.get_or_create(
            dict_type=bom_status_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM状态: {item["label"]}'
            }
        )
    
    # 生命周期状态字典
    lifecycle_status_dict, created = DictType.objects.get_or_create(
        value='lifecycle_status',
        defaults={
            'name': '生命周期状态',
            'status': True,
            'remark': '生命周期状态字典，用于存储产品的各种生命周期状态'
        }
    )
    
    # 生命周期状态字典数据
    lifecycle_status_data = [
        {'label': '开发中', 'value': 'DEVELOPMENT', 'sort': 1, 'color_type': 'processing', 'css_class': 'lifecycle-development'},
        {'label': '测试中', 'value': 'TESTING', 'sort': 2, 'color_type': 'processing', 'css_class': 'lifecycle-testing'},
        {'label': '已发布', 'value': 'RELEASED', 'sort': 3, 'color_type': 'success', 'css_class': 'lifecycle-released'},
        {'label': '生产中', 'value': 'PRODUCTION', 'sort': 4, 'color_type': 'success', 'css_class': 'lifecycle-production'},
        {'label': '已停用', 'value': 'DISCONTINUED', 'sort': 5, 'color_type': 'warning', 'css_class': 'lifecycle-discontinued'},
        {'label': '已淘汰', 'value': 'OBSOLETE', 'sort': 6, 'color_type': 'error', 'css_class': 'lifecycle-obsolete'},
    ]
    
    for item in lifecycle_status_data:
        DictData.objects.get_or_create(
            dict_type=lifecycle_status_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'生命周期状态: {item["label"]}'
            }
        )
    
    # 物料类型字典
    material_type_dict, created = DictType.objects.get_or_create(
        value='material_type',
        defaults={
            'name': '物料类型',
            'status': True,
            'remark': '物料类型字典，用于存储各种物料类型'
        }
    )
    
    # 物料类型字典数据
    material_type_data = [
        {'label': '原材料', 'value': 'RAW_MATERIAL', 'sort': 1, 'color_type': 'default', 'css_class': 'material-raw'},
        {'label': '半成品', 'value': 'SEMI_FINISHED', 'sort': 2, 'color_type': 'processing', 'css_class': 'material-semi'},
        {'label': '成品', 'value': 'FINISHED_GOOD', 'sort': 3, 'color_type': 'success', 'css_class': 'material-finished'},
        {'label': '辅料', 'value': 'AUXILIARY', 'sort': 4, 'color_type': 'warning', 'css_class': 'material-auxiliary'},
        {'label': '包装材料', 'value': 'PACKAGING', 'sort': 5, 'color_type': 'primary', 'css_class': 'material-packaging'},
    ]
    
    for item in material_type_data:
        DictData.objects.get_or_create(
            dict_type=material_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'物料类型: {item["label"]}'
            }
        )
    
    # BOM版本状态字典
    bom_version_status_dict, created = DictType.objects.get_or_create(
        value='bom_version_status',
        defaults={
            'name': 'BOM版本状态',
            'status': True,
            'remark': 'BOM版本状态字典，用于存储BOM版本的各种状态'
        }
    )
    
    # BOM版本状态字典数据
    bom_version_status_data = [
        {'label': '草稿', 'value': 'DRAFT', 'sort': 1, 'color_type': 'default', 'css_class': 'version-draft'},
        {'label': '审核中', 'value': 'REVIEWING', 'sort': 2, 'color_type': 'processing', 'css_class': 'version-reviewing'},
        {'label': '已批准', 'value': 'APPROVED', 'sort': 3, 'color_type': 'success', 'css_class': 'version-approved'},
        {'label': '激活', 'value': 'ACTIVE', 'sort': 4, 'color_type': 'success', 'css_class': 'version-active'},
        {'label': '已归档', 'value': 'ARCHIVED', 'sort': 5, 'color_type': 'default', 'css_class': 'version-archived'},
    ]
    
    for item in bom_version_status_data:
        DictData.objects.get_or_create(
            dict_type=bom_version_status_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM版本状态: {item["label"]}'
            }
        )
    
    # BOM变更类型字典
    bom_change_type_dict, created = DictType.objects.get_or_create(
        value='bom_change_type',
        defaults={
            'name': 'BOM变更类型',
            'status': True,
            'remark': 'BOM变更类型字典，用于存储各种BOM变更类型'
        }
    )
    
    # BOM变更类型字典数据
    bom_change_type_data = [
        {'label': '新增组件', 'value': 'ADD_COMPONENT', 'sort': 1, 'color_type': 'success', 'css_class': 'change-add'},
        {'label': '删除组件', 'value': 'REMOVE_COMPONENT', 'sort': 2, 'color_type': 'error', 'css_class': 'change-remove'},
        {'label': '修改组件', 'value': 'MODIFY_COMPONENT', 'sort': 3, 'color_type': 'warning', 'css_class': 'change-modify'},
        {'label': '替换组件', 'value': 'REPLACE_COMPONENT', 'sort': 4, 'color_type': 'processing', 'css_class': 'change-replace'},
        {'label': '修改用量', 'value': 'MODIFY_QUANTITY', 'sort': 5, 'color_type': 'warning', 'css_class': 'change-quantity'},
    ]
    
    for item in bom_change_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_change_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM变更类型: {item["label"]}'
            }
        )
    
    # BOM成本类型字典
    bom_cost_type_dict, created = DictType.objects.get_or_create(
        value='bom_cost_type',
        defaults={
            'name': 'BOM成本类型',
            'status': True,
            'remark': 'BOM成本类型字典，用于存储各种成本类型'
        }
    )
    
    # BOM成本类型字典数据
    bom_cost_type_data = [
        {'label': '材料成本', 'value': 'MATERIAL', 'sort': 1, 'color_type': 'default', 'css_class': 'cost-material'},
        {'label': '人工成本', 'value': 'LABOR', 'sort': 2, 'color_type': 'processing', 'css_class': 'cost-labor'},
        {'label': '制造费用', 'value': 'OVERHEAD', 'sort': 3, 'color_type': 'warning', 'css_class': 'cost-overhead'},
        {'label': '外协成本', 'value': 'OUTSOURCING', 'sort': 4, 'color_type': 'primary', 'css_class': 'cost-outsourcing'},
    ]
    
    for item in bom_cost_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_cost_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM成本类型: {item["label"]}'
            }
        )
    
    # BOM成本计算方法字典
    bom_cost_method_dict, created = DictType.objects.get_or_create(
        value='bom_cost_method',
        defaults={
            'name': 'BOM成本计算方法',
            'status': True,
            'remark': 'BOM成本计算方法字典，用于存储各种成本计算方法'
        }
    )
    
    # BOM成本计算方法字典数据
    bom_cost_method_data = [
        {'label': '标准成本', 'value': 'STANDARD', 'sort': 1, 'color_type': 'default', 'css_class': 'method-standard'},
        {'label': '平均成本', 'value': 'AVERAGE', 'sort': 2, 'color_type': 'processing', 'css_class': 'method-average'},
        {'label': '最新成本', 'value': 'LATEST', 'sort': 3, 'color_type': 'warning', 'css_class': 'method-latest'},
        {'label': '移动平均', 'value': 'MOVING_AVERAGE', 'sort': 4, 'color_type': 'primary', 'css_class': 'method-moving'},
    ]
    
    for item in bom_cost_method_data:
        DictData.objects.get_or_create(
            dict_type=bom_cost_method_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM成本计算方法: {item["label"]}'
            }
        )
    
    # BOM模拟类型字典
    bom_simulation_type_dict, created = DictType.objects.get_or_create(
        value='bom_simulation_type',
        defaults={
            'name': 'BOM模拟类型',
            'status': True,
            'remark': 'BOM模拟类型字典，用于存储各种模拟类型'
        }
    )
    
    # BOM模拟类型字典数据
    bom_simulation_type_data = [
        {'label': '成本模拟', 'value': 'COST', 'sort': 1, 'color_type': 'default', 'css_class': 'sim-cost'},
        {'label': '用量变更', 'value': 'QUANTITY', 'sort': 2, 'color_type': 'processing', 'css_class': 'sim-quantity'},
        {'label': '物料替换', 'value': 'SUBSTITUTION', 'sort': 3, 'color_type': 'warning', 'css_class': 'sim-substitution'},
        {'label': '版本比较', 'value': 'VERSION_COMPARISON', 'sort': 4, 'color_type': 'primary', 'css_class': 'sim-version'},
    ]
    
    for item in bom_simulation_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_simulation_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM模拟类型: {item["label"]}'
            }
        )
    
    # BOM报告类型字典
    bom_report_type_dict, created = DictType.objects.get_or_create(
        value='bom_report_type',
        defaults={
            'name': 'BOM报告类型',
            'status': True,
            'remark': 'BOM报告类型字典，用于存储各种报告类型'
        }
    )
    
    # BOM报告类型字典数据
    bom_report_type_data = [
        {'label': 'BOM清单', 'value': 'BOM_LIST', 'sort': 1, 'color_type': 'default', 'css_class': 'report-bom'},
        {'label': '成本分析', 'value': 'COST_ANALYSIS', 'sort': 2, 'color_type': 'processing', 'css_class': 'report-cost'},
        {'label': '物料需求', 'value': 'MATERIAL_REQUIREMENT', 'sort': 3, 'color_type': 'warning', 'css_class': 'report-mrp'},
        {'label': '变更记录', 'value': 'CHANGE_LOG', 'sort': 4, 'color_type': 'primary', 'css_class': 'report-change'},
    ]
    
    for item in bom_report_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_report_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM报告类型: {item["label"]}'
            }
        )
    
    # BOM权限类型字典
    bom_permission_type_dict, created = DictType.objects.get_or_create(
        value='bom_permission_type',
        defaults={
            'name': 'BOM权限类型',
            'status': True,
            'remark': 'BOM权限类型字典，用于存储各种权限类型'
        }
    )
    
    # BOM权限类型字典数据
    bom_permission_type_data = [
        {'label': '查看', 'value': 'VIEW', 'sort': 1, 'color_type': 'default', 'css_class': 'perm-view'},
        {'label': '编辑', 'value': 'EDIT', 'sort': 2, 'color_type': 'processing', 'css_class': 'perm-edit'},
        {'label': '审核', 'value': 'APPROVE', 'sort': 3, 'color_type': 'warning', 'css_class': 'perm-approve'},
        {'label': '删除', 'value': 'DELETE', 'sort': 4, 'color_type': 'error', 'css_class': 'perm-delete'},
    ]
    
    for item in bom_permission_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_permission_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM权限类型: {item["label"]}'
            }
        )
    
    # BOM流程类型字典
    bom_flow_type_dict, created = DictType.objects.get_or_create(
        value='bom_flow_type',
        defaults={
            'name': 'BOM流程类型',
            'status': True,
            'remark': 'BOM流程类型字典，用于存储各种流程类型'
        }
    )
    
    # BOM流程类型字典数据
    bom_flow_type_data = [
        {'label': '创建审批', 'value': 'CREATE_APPROVAL', 'sort': 1, 'color_type': 'default', 'css_class': 'flow-create'},
        {'label': '变更审批', 'value': 'CHANGE_APPROVAL', 'sort': 2, 'color_type': 'processing', 'css_class': 'flow-change'},
        {'label': '版本审批', 'value': 'VERSION_APPROVAL', 'sort': 3, 'color_type': 'warning', 'css_class': 'flow-version'},
        {'label': '停用审批', 'value': 'DEACTIVATE_APPROVAL', 'sort': 4, 'color_type': 'error', 'css_class': 'flow-deactivate'},
    ]
    
    for item in bom_flow_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_flow_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM流程类型: {item["label"]}'
            }
        )
    
    # BOM流程状态字典
    bom_flow_status_dict, created = DictType.objects.get_or_create(
        value='bom_flow_status',
        defaults={
            'name': 'BOM流程状态',
            'status': True,
            'remark': 'BOM流程状态字典，用于存储各种流程状态'
        }
    )
    
    # BOM流程状态字典数据
    bom_flow_status_data = [
        {'label': '进行中', 'value': 'IN_PROGRESS', 'sort': 1, 'color_type': 'processing', 'css_class': 'flow-progress'},
        {'label': '已完成', 'value': 'COMPLETED', 'sort': 2, 'color_type': 'success', 'css_class': 'flow-completed'},
        {'label': '已拒绝', 'value': 'REJECTED', 'sort': 3, 'color_type': 'error', 'css_class': 'flow-rejected'},
        {'label': '已取消', 'value': 'CANCELLED', 'sort': 4, 'color_type': 'default', 'css_class': 'flow-cancelled'},
    ]
    
    for item in bom_flow_status_data:
        DictData.objects.get_or_create(
            dict_type=bom_flow_status_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM流程状态: {item["label"]}'
            }
        )
    
    # BOM步骤类型字典
    bom_step_type_dict, created = DictType.objects.get_or_create(
        value='bom_step_type',
        defaults={
            'name': 'BOM步骤类型',
            'status': True,
            'remark': 'BOM步骤类型字典，用于存储各种步骤类型'
        }
    )
    
    # BOM步骤类型字典数据
    bom_step_type_data = [
        {'label': '提交', 'value': 'SUBMIT', 'sort': 1, 'color_type': 'default', 'css_class': 'step-submit'},
        {'label': '审核', 'value': 'REVIEW', 'sort': 2, 'color_type': 'processing', 'css_class': 'step-review'},
        {'label': '批准', 'value': 'APPROVE', 'sort': 3, 'color_type': 'success', 'css_class': 'step-approve'},
        {'label': '拒绝', 'value': 'REJECT', 'sort': 4, 'color_type': 'error', 'css_class': 'step-reject'},
    ]
    
    for item in bom_step_type_data:
        DictData.objects.get_or_create(
            dict_type=bom_step_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM步骤类型: {item["label"]}'
            }
        )
    
    # BOM步骤状态字典
    bom_step_status_dict, created = DictType.objects.get_or_create(
        value='bom_step_status',
        defaults={
            'name': 'BOM步骤状态',
            'status': True,
            'remark': 'BOM步骤状态字典，用于存储各种步骤状态'
        }
    )
    
    # BOM步骤状态字典数据
    bom_step_status_data = [
        {'label': '待处理', 'value': 'PENDING', 'sort': 1, 'color_type': 'default', 'css_class': 'step-pending'},
        {'label': '处理中', 'value': 'PROCESSING', 'sort': 2, 'color_type': 'processing', 'css_class': 'step-processing'},
        {'label': '已完成', 'value': 'COMPLETED', 'sort': 3, 'color_type': 'success', 'css_class': 'step-completed'},
        {'label': '已跳过', 'value': 'SKIPPED', 'sort': 4, 'color_type': 'warning', 'css_class': 'step-skipped'},
    ]
    
    for item in bom_step_status_data:
        DictData.objects.get_or_create(
            dict_type=bom_step_status_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'BOM步骤状态: {item["label"]}'
            }
        )
    
    # 替代物料状态字典
    alt_material_status_dict, created = DictType.objects.get_or_create(
        value='alt_material_status',
        defaults={
            'name': '替代物料状态',
            'status': True,
            'remark': '替代物料状态字典，用于存储各种替代物料状态'
        }
    )
    
    # 替代物料状态字典数据
    alt_material_status_data = [
        {'label': '草稿', 'value': 'DRAFT', 'sort': 1, 'color_type': 'default', 'css_class': 'alt-draft'},
        {'label': '审核中', 'value': 'REVIEWING', 'sort': 2, 'color_type': 'processing', 'css_class': 'alt-reviewing'},
        {'label': '已批准', 'value': 'APPROVED', 'sort': 3, 'color_type': 'success', 'css_class': 'alt-approved'},
        {'label': '已激活', 'value': 'ACTIVE', 'sort': 4, 'color_type': 'success', 'css_class': 'alt-active'},
        {'label': '已停用', 'value': 'INACTIVE', 'sort': 5, 'color_type': 'warning', 'css_class': 'alt-inactive'},
    ]
    
    for item in alt_material_status_data:
        DictData.objects.get_or_create(
            dict_type=alt_material_status_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'替代物料状态: {item["label"]}'
            }
        )
    
    # 文档类型字典
    document_type_dict, created = DictType.objects.get_or_create(
        value='document_type',
        defaults={
            'name': '文档类型',
            'status': True,
            'remark': '文档类型字典，用于存储各种文档类型'
        }
    )
    
    # 文档类型字典数据
    document_type_data = [
        {'label': '设计图纸', 'value': 'DESIGN_DRAWING', 'sort': 1, 'color_type': 'default', 'css_class': 'doc-design'},
        {'label': '工艺文件', 'value': 'PROCESS_FILE', 'sort': 2, 'color_type': 'processing', 'css_class': 'doc-process'},
        {'label': '技术规范', 'value': 'TECHNICAL_SPEC', 'sort': 3, 'color_type': 'warning', 'css_class': 'doc-tech'},
        {'label': '测试报告', 'value': 'TEST_REPORT', 'sort': 4, 'color_type': 'success', 'css_class': 'doc-test'},
        {'label': '其他文档', 'value': 'OTHER', 'sort': 5, 'color_type': 'primary', 'css_class': 'doc-other'},
    ]
    
    for item in document_type_data:
        DictData.objects.get_or_create(
            dict_type=document_type_dict,
            value=item['value'],
            defaults={
                'label': item['label'],
                'sort': item['sort'],
                'color_type': item.get('color_type', 'default'),
                'css_class': item.get('css_class', ''),
                'status': True,
                'remark': f'文档类型: {item["label"]}'
            }
        )
    
    print("BOM字典数据初始化完成")


if __name__ == '__main__':
    init_bom_dict_data()